package com.igeek.string;

import java.util.Scanner;

/**
 * 正则表达式
 *      一、基本语法
 *          ^ 匹配字符串的开始
 *          $ 匹配字符串的结尾
 *          \d 匹配所有数字[0-9] \\d    \D表示取反，匹配所有非数字
 *          \w 匹配所有的字母、数字、下划线 \\w  \W表示取反，匹配的就是非字母、数字、下划线
 *          . 表示任意非空字符
 *          \s 表示任意一个空白字符
 *          [] 表示匹配其中的内容 [abc]规则就是，字符串要满足，包含a 或者是b 或者是c
 *          [^] 表示取反
 *          ()表示内部是一个组合，以组合的形式出现
 *
 *      二、数量的表示
 *          {n}出现n次
 *          {n,} 出现至少 n 次以上 {n,m} 出现n到m
 *          + 至少出现一次
 *          ? 最多可以出现一次
 *          * 可以出现 0 到任意次
 *
 */
public class Demo04 {

    public static void main(String[] args) {


//        regexPhone();
        regexEmail();
    }

    public static void regexPhone(){
        /*
            例：校验手机号
                数字
                11位
                第一位 1
                第二位 不可以取 0，1，2
                后几位 没有限制，只要是数字就行
         */

        String regex = "^1[^0-2]\\d{9}$";
        System.out.println("请输入一个手机号");

        Scanner scanner = new Scanner(System.in);

        String input = scanner.next();

        if(!input.matches(regex)){
            System.out.println("没匹配成功，再来一次");
            regexPhone();
        }
    }


    public static void regexEmail(){

        /*
            邮箱的规则：
                用户名：字母数字下划线
                @
                域名：字母或者是数字.

                sdfsd@163.com
         */
        String regex = "^\\w+@([0-9a-z]+\\.)+[a-z]+$";

        System.out.println("sdfs".matches(regex));
        System.out.println("请输入一个邮箱");


        Scanner scanner = new Scanner(System.in);

        String input = scanner.next();

        if(!input.matches(regex)){
            System.out.println("没匹配成功，再来一次");
            regexEmail();
        }

    }
}
